package com.google.code.gronono.commons.io.file.jpeg;

import java.io.File;
import java.io.IOException;
import java.net.URI;

import com.google.code.gronono.commons.exif.ExifData;
import com.google.code.gronono.commons.exif.ExifDataReader;

/**
 * Représente un fichier de type JPEG.
 *
 * @author Arnaud BRUNET.
 */
public class JpegFile extends File {
	/** serialVersionUID. */
	private static final long serialVersionUID = -941395497634367985L;

	/** Données EXIF du fichier. */
	private ExifData exifData;

	/**
	 * @see File#File(File, String)
	 */
	public JpegFile(final File parent, final String child) {
		super(parent, child);
	}

	/**
	 * @see File#File(String, String)
	 */
	public JpegFile(final String parent, final String child) {
		super(parent, child);
	}

	/**
	 * @see File#File(String)
	 */
	public JpegFile(final String pathname) {
		super(pathname);
	}

	/**
	 * @see File#File(URI)
	 */
	public JpegFile(final URI uri) {
		super(uri);
	}

	/**
	 * Constructeur.
	 * @param file Le fichier à encapsuler dans un {@link JpegFile}.
	 * @see File#File(String, String)
	 */
	public JpegFile(final File file) {
		this(file.getParent(), file.getName());
	}

	/**
	 * Donne les données EXIF du fichier.
	 * @return Les données EXIF du fichier.
	 */
	public ExifData getExifData() {
		if (this.exifData == null) {
			try {
				this.exifData = new ExifDataReader(this).read();
			} catch (final IOException e) {
				// On laisse les données EXIF à null
			}
		}
		return this.exifData;
	}

}
